
using System.Threading.Tasks;
using HengTong.Model.Db.SupplyChain.Material;
using HengTong.Model.Db.SupplyChain.Warehouse;
using TiaoTaoHelper.Wtm.Models;

namespace HengTong.Model.Interfaces;

/// <summary>
/// 第三方数据提供者接口，定义从第三方系统获取各种主数据的操作
/// </summary>
public interface IThirdPartyDataProvider
{
    /// <summary>
    /// 获取第三方组织架构数据
    /// </summary>
    /// <returns>组织架构数据集合</returns>
    Task<SysOrg[]> GetOrgData();
    
    /// <summary>
    /// 获取第三方计量单位组数据
    /// </summary>
    /// <returns>计量单位组数据集合</returns>
    Task<SysMeasureUnitGroupView[]> GetMeasureUnitGroupData();
    
    /// <summary>
    /// 获取第三方计量单位数据
    /// </summary>
    /// <returns>计量单位数据集合</returns>
    Task<SysMeasureUnitView[]> GetMeasureUnitData();
    
    /// <summary>
    /// 获取第三方物料组数据
    /// </summary>
    /// <returns>物料组数据集合</returns>
    Task<SysMaterialGroupView[]> GetMaterialGroupData();
    
    /// <summary>
    /// 获取第三方物料数据, 这里没有使用数据视图模型是因为三方数据会比较多, 不适合每次从三方读取全部数据到内存再进行转换
    /// </summary>
    /// <returns>物料数据集合</returns>
    Task<SysRawMaterial[]> GetMaterial();
    
    /// <summary>
    /// 获取第三方成本中心数据
    /// </summary>
    /// <returns>成本中心数据集合</returns>
    Task<object> GetCostCenterData();
    
    /// <summary>
    /// 获取第三方仓库数据
    /// </summary>
    /// <returns></returns>
    Task<SysWarehouse[]> GetWarehouseData();
    
    /// <summary>
    /// 获取第三方仓位数据
    /// </summary>
    /// <returns></returns>
    Task<SysWarehouseLocationView[]> GetWarehouseLocationData();
    
    /// <summary>
    /// 获取第三方仓库库存数据
    /// </summary>
    /// <returns></returns>
    Task<SysWarehouseStockView[]> GetWarehouseStockData();
}
